/**
 * @author ChaP
 * @date 2019/05/17
 * @describe:
 */
package CodingTest.AC20190517;

/**
 * leetcode - 441
 * 你总共有 n 枚硬币，你需要将它们摆成一个阶梯形状，第 k 行就必须正好有 k 枚硬币。

 给定一个数字 n，找出可形成完整阶梯行的总行数。

 n 是一个非负整数，并且在32位有符号整型的范围内。

 示例 1:

 n = 5

 硬币可排列成以下几行:
 ¤
 ¤ ¤
 ¤ ¤

 因为第三行不完整，所以返回2.
 示例 2:

 n = 8

 硬币可排列成以下几行:
 ¤
 ¤ ¤
 ¤ ¤ ¤
 ¤ ¤

 因为第四行不完整，所以返回3.
 */
public class arrangeCoins {
    public int arrangeCoins(int n){
       int i = 1,j=n,mid = 0;
       while(i<=j){
           mid = i+(j-i)/2;
           if((double)(1+mid)/2 == (double)n/mid )
               return mid;
           else if((double)(1+mid)/2 >(double)n/mid)
               j = mid-1;
           else i = mid+1;
       }
       return j;
    }
}
